package main

import (
	"fmt"
	"time"
)

func main() {
	//创建一个缓冲队列为1的chan
	ch := make(chan int, 1)
	go func() {
		//读取数据，如果chan中没有数据，则会等待
		<-ch
		for i := 1; i <= 5; i++ {
			time.Sleep(time.Millisecond)
			fmt.Println(i)
		}
	}()

	go func() {
		//此方式，第二个协程永远会在第一个协程之前执行完成，
		//因为第一个协程需要获取chan中的数据，没有就会等待，
		//而向chan中写入数据只有在第二个协程之前完成之时，才会写入
		for i := 1; i <= 5; i++ {
			time.Sleep(time.Millisecond)
			fmt.Println(i * 10)
		}
		ch <- 0
	}()
	time.Sleep(time.Second)
}
